package cn.tedu._03vehicle.base.interceptors;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;

import java.time.LocalDateTime;

/**
 * 限定访问时间的拦截器:所有请求只能在06:00-23:00之间访问;
 */
@Slf4j
public class TimeAccessInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.debug("进入到限定访问时间的拦截器...");
        /*
            1.获取当前时间[小时];
            2.判断当前时间是否在限定的时间段内;
              2.1 是: return true;放行
              2.2 不是: return false;拦截
         */
        LocalDateTime now = LocalDateTime.now();
        int hour = now.getHour();
        if (hour < 6 || hour > 22){
            //选择1:返回false之前,重定向到一个错误页面;
            //     http://localhost:8080/error.html
            //response.sendRedirect("/error.html");
            //return false;

            //选择2:抛出异常,然后到全局异常处理器中处理该异常;
            throw new RuntimeException("请在06:00-23:00之间进行访问");
        }
        return true;
    }
}








